using SG3L_RAG.Application.DTOs;
using SG3L_RAG.Domain.Entities;

namespace SG3L_RAG.Application.Interfaces
{
    public interface IDocumentProcessingService
    {
        Task<DocumentProcessResponseDto> ProcessDocumentAsync(DocumentProcessRequestDto request);
        Task<DocumentProcessResponseDto> ProcessUploadedFileAsync(DocumentUploadDto uploadDto);
        Task<List<DocumentDto>> GetProcessedDocumentsAsync(Guid? uploaderId = null);
        Task<bool> ReprocessDocumentAsync(Guid documentId);
        Task<List<string>> ExtractTextFromFileAsync(byte[] fileContent, string fileName);
        Task<List<DocumentChunk>> SplitTextIntoChunksAsync(string text, int chunkSize = 1000, int overlap = 200);
    }
}
